package kr.co.bettersoft.waitnumbercustomer.activity;

import kr.co.bettersoft.waitnumbercustomer.common.CommonConstant;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
/**
 * CertificationStep1
 * 인증 화면 - 1단계 - 사용자 동의
 * 
 * 인증을 받기 전에 사용자 동의를 받는다.
 * 
 * 사용자는 이용약관과 개인정보 취급방침에 동의한 후 하단 버튼을 눌러 인증2단계로 넘어간다.
 */
public class CertificationStep1 extends Activity{
///////////////////////////////////////////////////////////////////////////////////////////////////////
// 변수
	String TAG = "CertificationStep1";
	
	// 폰트
	private Typeface typefaceNanumGothic= null; 
	private Typeface typefaceNanumGothicBold = null;
	
	// 화면 구성
	TextView titleBar;		// 타이틀
	CheckBox checkBoxTerms; // 이용약관 동의 체크
	CheckBox checkBoxPrivacyTerms; // 개인정보 동의 체크
	Button seeTermsBtn; 	// 이용약관 보기 버튼
	Button seePrivacyTermsBtn; 	// 개인정보방침 보기 버튼
	Button userConfirmBtn; 	//다음(인증)화면으로 이동하기 버튼

///////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	// 핸들러
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			Bundle b = msg.getData();
			try{
				if(b.getInt("showErrToast")==1){
					Toast.makeText(CertificationStep1.this,b.getString("msg"), Toast.LENGTH_SHORT).show();
				}
				if(b.getInt("showAlert")==1){					 // 경고창 . 
					//
					new AlertDialog.Builder(returnThis())
					.setTitle(CommonConstant.alertTitle)							
					.setMessage(b.getString("msg"))
					.setIcon(R.drawable.ic_dialog_img)		// 경고창.  
					.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
						public void onClick(DialogInterface dialog, int whichButton) {
							// 그냥 사용자 확인 용이기 때문에 추가 조작 없음.
						}})
						.setNegativeButton("", null).show();
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};
	
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    requestWindowFeature( Window.FEATURE_NO_TITLE ); // ?
//	    loadTypeface();
	    setContentView(R.layout.certification_step1_activity);
	    
	    titleBar = (TextView) findViewById(R.id.title_bar);
	    checkBoxTerms = (CheckBox) findViewById(R.id.checkBoxTerms);	// 이용약관 동의 체크
	    checkBoxPrivacyTerms = (CheckBox) findViewById(R.id.checkBoxPrivacyTerms);	// 개인정보 수집 동의 체크
	    seeTermsBtn = (Button) findViewById(R.id.seeTermsBtn);	// 이용약관 보기 버튼
	    seePrivacyTermsBtn = (Button) findViewById(R.id.seePrivacyTermsBtn);	// 개인정보 방침 보기 버튼
	    userConfirmBtn = (Button) findViewById(R.id.userConfirmBtn);			// 하단 확인 버튼
	    
	    // 폰트 지정.
	    typefaceNanumGothic = Typeface.createFromAsset(getAssets(), CommonConstant.NanumGothic);  
	    typefaceNanumGothicBold = Typeface.createFromAsset(getAssets(), CommonConstant.NanumGothicBold);
	 // 폰트 적용
	    titleBar.setTypeface(typefaceNanumGothic);		
	    checkBoxTerms.setTypeface(typefaceNanumGothic);		 
	    checkBoxPrivacyTerms.setTypeface(typefaceNanumGothic);
	    seeTermsBtn.setTypeface(typefaceNanumGothicBold);
	    seePrivacyTermsBtn.setTypeface(typefaceNanumGothicBold);
	    userConfirmBtn.setTypeface(typefaceNanumGothicBold);
	    
	    
	    // 버튼 리스너
	    seeTermsBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 인텐트 - 웹뷰로 이용약관 창 띄움.
				Intent webIntent = new Intent(CertificationStep1.this, myWebView.class);
				webIntent.putExtra("loadingURL", CommonConstant.termsPolicyURL);		
				startActivity(webIntent);
			}
		});
	    seePrivacyTermsBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 인텐트 - 웹뷰로 개인정보 취급방침 창 띄움.
				Intent webIntent = new Intent(CertificationStep1.this, myWebView.class);
				webIntent.putExtra("loadingURL", CommonConstant.termsPolicyURL);		
				startActivity(webIntent);
			}
		});
	    
	    userConfirmBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 체크박스 체크하고 체크되있으면 다음화면으로, 안되있으면 알림창 . 
				if(checkTheCheckBox()){
					Intent intent = new Intent(CertificationStep1.this, CertificationStep2.class);
					startActivity(intent);   
					finish();
				}else{
					showResultDialog(getString(R.string.you_did_not_agree));
				}
				
			}
		});
	}
//	// 폰트 
//	private void loadTypeface(){
//		if(typeface==null)
//			typeface = Typeface.createFromAsset(getAssets(), TYPEFACE_NAME);
//	}
//	@Override
//	public void setContentView(int viewId) {
//		View view = LayoutInflater.from(this).inflate(viewId, null);
//		ViewGroup group = (ViewGroup)view;
//		int childCnt = group.getChildCount();
//		for(int i=0; i<childCnt; i++){
//			View v = group.getChildAt(i);
//			if(v instanceof TextView){
//				((TextView)v).setTypeface(typeface);
//			}
//		}
//		super.setContentView(view);
//	}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 유틸
	
	
	
	
	// 체크박스가 체크되어있는지 확인 한다.
	public Boolean checkTheCheckBox(){
		if(checkBoxTerms.isChecked()&&checkBoxPrivacyTerms.isChecked()){
			return true;
		}else{
			return false;
		}
	}
	
	public Context returnThis(){
		return this;
	}
	
	/**
	 * showResultDialog
	 * 토스트를 얼럿으로 바꾼다.
	 *
	 * @param msg
	 * @param 
	 * @return 
	 */
	public void showResultDialog(final String msg){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("showAlert", 1);
						b.putString("msg", msg);			// 화면에 보여줄 메시지
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}
	
	public void alertMsg(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();
						Bundle b = new Bundle();
						String alrtMsg = getString(R.string.certi_fail_msg);
						b.putInt("showErrToast", 1);
						b.putString("msg", alrtMsg);			
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}
	
}
